System and method for manipulating offline software

ABSTRACT

A system and method for manipulation of offline software. A software driver executing on a computer accesses and modifies target software while the target software is in an offline state. The software driver allows installation and configuration of an operating system and/or associated application programs to the target software when an operating system associated with the target software is not executing.

TECHNICAL FIELD

The present invention relates to the field of software manipulation. Inparticular, this invention relates to a system and method formanipulation by a computer of offline target software stored on one ormore target computer-readable media of a target computer.

BACKGROUND OF THE INVENTION

In some prior art systems, installing and configuring desirable featuresof a software product is complex and requires a significant length oftime. In such systems, customizing an operating system and its installedapplications can only be done by running that operating system andperforming actions while in that context. Such online systemmanipulation actions include installing or uninstalling applications,customizing settings such as desktop wallpaper, or adding a new user.Booting into the operating system to make these changes is a timeconsuming process and requires validation of those changes therebydelaying deployment of the operating system. In addition, updating filesor system settings for software that is actively executing may result inthe software becoming inconsistent or unstable. Further, reboots may berequired between updates.

In addition, the prior art systems fail to support scenarios in which anoperating system requires certain changes prior to booting. For example,the operating system may require a certain device driver. In such cases,the prior art systems perform the changes after the operating systemboots.

For these reasons, a system for offline system manipulation is desiredto address one or more of these and other disadvantages.

SUMMARY OF THE INVENTION

The invention provides software for manipulation by a computer ofoffline target software stored on one or more target computer-readablemedia of a target computer. In particular, the invention includes adriver executing on the computer to provide access to the offline targetsoftware.

The invention includes software functionality that allows installationand configuration of an operating system and/or associated applicationprograms offline or otherwise outside the context of the operatingsystem associated with the target software. That is, the inventionincludes a software installation and configuration technique performedwithout installing or traditionally running the target software or anoperating system associated with the target software.

With the architecture of the invention, installation and configurationactions, data store manipulation, execution of application programminginterface routines, file system manipulation, and other actions can beapplied to an operating system and application programs while theoperating system and application programs are in an offline state.Software of the invention redirects such actions performed in an onlinemanner to the location of the files associated with the offline system.In addition, if a list of the actions is declared or otherwise availableto the invention software, the invention software provides forperformance of the actions natively (i.e., without redirection). Thearchitecture of the invention can be used in both an online and offlinemanner to act on the operating system and application programs of therunning system or on a set of files at another location, respectively.

With the invention, the user can modify software on one or more targetcomputers without booting into an operating system associated with thesoftware. In addition, changes can be made to the software withoutre-validating the software in its entirety or otherwise re-packaging thesoftware.

In accordance with one aspect of the invention, a system providesmanipulation of target software by a computer. The target software isstored on one or more target computer-readable media. The targetsoftware has an online state and an offline state. The system executes adriver on the computer to provide access to the target software. Thedriver includes one or more redirect components for manipulating thetarget software when the target software is offline. The manipulationoccurs in response to at least one command received from a user.

In accordance with another aspect of the invention, a method providesmanipulation of target software by a computer. The target software isstored on one or more target computer-readable media. The targetsoftware has an online state and an offline state. The method furtherincludes accessing the target computer-readable media when the targetsoftware is offline in response to at least one command received from auser.

In accordance with another aspect of the invention, a computer-readablemedium includes a data structure. The data structure represents a queueand is for use by a computer in manipulating target software stored onone or more target computer-readable media. The target software has anonline state and an offline state. The manipulation occurs when thetarget software is in the offline state and in response to at least onecommand received from a user. Further, the data structure includes aqueue field that stores a list of one or more tasks associated with theexecutable command.

In accordance with yet another aspect of the invention, a system addsone or more drivers to one or more target computer-readable media. Thesystem performs the addition via a computer. The target software has anonline state and an offline state. The system includes a user interfaceassociated with the computer and adapted for creating a systempreparation file. The system preparation file includes a list of thedrivers to be added to the target software responsive to user input. Thesystem further includes a software tool that executes on the computer.The software tool is responsive to the user interface and installs thedrivers listed in the system preparation file to the target softwarewhen the target software is in the offline state.

Alternatively, the invention may comprise various other methods andapparatuses.

Other features will be in part apparent and in part pointed outhereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an exemplary block diagram illustrating a computer connectedto a target computer-readable media.

FIG. 2 is an exemplary block diagram illustrating a targetcomputer-readable medium storing target software.

FIG. 3 is an exemplary block diagram illustrating the driver softwarecomponents of the computer communicating with target software.

FIG. 4 is an exemplary flow chart illustrating operation of the driversoftware components.

FIG. 5 is a block diagram illustrating an exemplary computer-readablemedium storing a queue.

FIG. 6 is a block diagram illustrating the exemplary elements ofsoftware for manipulation of offline mass storage device drivers.

FIG. 7 is a block diagram illustrating one example of a suitablecomputing system environment in which the invention may be implemented.

Corresponding reference characters indicate corresponding partsthroughout the drawings.

DETAILED DESCRIPTION OF THE INVENTION

The invention provides software for manipulation of offline targetsoftware in a scenario such as illustrated in FIG. 1. In particular, theinvention software allows for manipulation by a computer of targetsoftware stored on one or more target computer-readable media when anoperating system associated with the target software is not executing oris otherwise offline. Executing an operating system or an applicationprogram includes loading the machine code of the operating system or theapplication program into memory and then performing instructions inaccordance with the machine code. In one embodiment, a server stores oneor more images of target software that are offline. The target softwarehas an online state and an offline state corresponding to the states ofan operating system associated with the target software in which theoperating system is running and not running, respectively. That is, theoffline manipulation of the invention relates to manipulating the targetsoftware when an operating system associated with the target software isnot running or executing. The online state and the offline state tend tobe mutually exclusive. If the target software includes an operatingsystem, the target software is online when the operating system isexecuting and offline when the operating system is not executing. If thetarget software includes an application program, the target software isonline when the application program is executing and offline when theapplication program is not executing. Further examples of manipulationof offline software are described with respect to FIG. 1 below.

The system of the invention includes a driver executing on the computerto provide access to the target software (e.g., via the datacommunication system). The driver includes one or more redirectcomponents for manipulating the target software when the target softwareis offline. The manipulating occurs in response to at least one commandreceived from a user. Manipulation includes, but is not limited to,modifying files by adding, deleting, or editing files or system settings(e.g., registry keys).

The invention differs from other systems in various ways. For example,other systems provide for redirecting application programming interfacecalls in a virtual memory system. Similarly, other systems includecomputer systems that automatically provide some of their capabilitiesto a main computer without powering on to facilitate configuring suchsystems in their shipping packages. However, all the other systemsexecute the operating system associated with the target software. Incontrast, the invention provides a system for manipulation of softwarewithout executing an operating system associated with the software asillustrated in FIG. 1.

The invention software facilitates the user selection of configurationoptions prior to installing a complete software image or otherrepresentation or state of a file or file system. The result is a fastinstallation and configuration of a software product with the desiredfeatures in a minimal amount of time. In addition, with the inventionsoftware, any online action can be redirected to be performed in anoffline manner. Such actions include, but are not limited to, addingservices (to the operating system and to any application programs),adding patches or fixes to software, adding hardware support (e.g.,drivers), adding or removing functionality or entire applicationprograms. Further, additional components can be added to offline imagessuch as SKU and language components.

In one embodiment, re-direction is not specified for an action. Forexample, a software component may specify that an action is to beperformed in the context of the installed, executing operating system towhich the software component will be added. In such an embodiment, amanifest for the software component (e.g., service, patch, orapplication program) provides information relating to the action.Offline updates are performed to allow for the action to be performedwhen the operating system is installed and executing (i.e., performed inan online manner).

The functionality illustrated in FIGS. 1–6 may be accessed by the uservia a graphical user interface such as user interface 602.

Referring first to FIG. 1, an exemplary block diagram illustrates acomputer 102 connected to a server 104. The server 104 includes one ormore target computer-readable media 108 storing target software 110 thatis offline. By way of example and not limitation, computer-readablemedia comprise computer storage media and communication media asdescribed with reference to FIG. 7. In operation, the computer 102responds to commands received from a user and manipulates the targetsoftware 110 stored on the server 104.

In one embodiment, the computer 102 and server 104 (or the targetsoftware 110) are connected via a data communication system such asnetwork 106. The data communication system includes, but is not limitedto, networked connections as well as direct connections such as serial,parallel, infrared, cellular, or other wired or wireless connection, orany other network such as described with reference to FIG. 7. Forexample, an operating system associated with the computer 102 isexecuting while the server 104 such as a file server simply providesaccess to the target software 110. The target software 110 may includean installed operating system. The operating system included orotherwise associated with the target software 110 is not executing. Thecomputer 102 accesses the target computer-readable media 108 storing thetarget software 110 to make modifications to the target software 110that is offline. The target computer-readable media 108 can be accessedby the computer 102 as a network share or as a local medium.

Those skilled in the art will note that the illustration of FIG. 1including the network 106 is merely exemplary. In another embodiment,the target computer-readable media 108 is locally accessible by thecomputer 102. That is, network 106 and server 104 are not included inthat the target software 110 is not physically on another computerattached via a network or other connection. The target software 110 canbe another volume, a logical set of folders, or an image on the computer102. In this embodiment, an operating system associated with the targetsoftware 110 is not currently active or running in the context of theoperating system associated with the computer 102. For example, thecomputer 102 may be the same computer used to install the operatingsystem of the target software 102 to the target computer-readable media108. In this example, the computer 102 halts execution of the installedoperating system of the target software 110 and boots another operatingsystem (e.g., via a removable computer-readable medium). The computer102 boots the other operating system or some environment, separate fromthe target software 110, which executes with the invention software tomanipulate the offline target software 110. For example, the computer102 may boot off a floppy or a CD-ROM. In the context of this bootedoperating system, a user could modify the target software 110 stored onlocal computer-readable medium such as the C:\drive. Such modificationoccurs offline in that the computer 102 is booted, but not into anoperating system associated with the target software 110. For example,the invention software allows complex modifications to occur in thisoffline fashion by re-directing all tasks associated with theinstallation of an application program to the offline target software110. After re-directing performance of the tasks and after a reboot intothe operating system associated with the target software 110, theapplication program has been installed.

Generally, the invention provides software (such as driver software 304in FIG. 3) to access the data on the target computer-readable medium108. In one scenario of the invention as described above, the userlocally boots from a bootable removable media to modify local, offlinesoftware. In another scenario of the invention, the user boots a localsystem to modify remote, offline software. In one embodiment, theinvention software mounts the target computer-readable medium 108 usingmounting methods known in the art to provide basic file input/outputaccess. For example, an image foo.img can be mounted and appear to theonline system as X:\ (i.e., X:\system, X:\config, etc.). The inventionalso provides software routines to modify system settings associatedwith the target computer 110. In one embodiment, the invention providesan application programming interface to allow a user to modify suchsystem settings (e.g., registry values). For example, an API of theinvention allows a user to load a registry hive associated with thetarget software 110 in the computer 102. Using the API, the user canmodify the loaded registry hive to effect changes in the target software110. For example, the following registry key illustrates a registry hiveloaded from offline software such as target software 110 into thecomputer 102.

HKLM\offline_system\setup\Setupinprogress=1

After loading the registry hive, the loaded registry hive points to themounted, offline software image. As in the previous example, the offlineregistry hive points to the image foo.img at X:\ (i.e., X:\system,X:\config, etc.). All registry key updates are directed to the loaded,offline registry hive. In an alternative embodiment, all the registrykey updates that occur during modification of the offline file systemare queued and then applied after the modifications to the offline filesystem are complete.

Referring next to FIG. 2, an exemplary block diagram illustrates thetarget computer-readable medium 108 that stores target software 110. Thetarget software 110 includes an operating system 206 and/or anapplication program 208. The operation system 206 includes one or moreoperating system files 210 such as file #1 through file #N. Theapplication program 208 includes one or more application program files212 such as file #1 through file #M.

Referring next to FIG. 3, an exemplary block diagram illustrates thedriver software components of the computer 102 that communicate with thetarget software 110 stored on the target computer-readable media 108. Inthis example, the computer 102 includes an online operating system 302and driver software 304. While the computer 102 is shown connected tothe target computer-readable media 108 via network 106, such aconnection is optional as described above.

The driver software 304 includes components that can be executed whenthe computer 102 receives a command from the user. In one embodiment,driver software 304 includes a registry application programminginterface (API) component 306, a setup API component 308, a serviceinstall API component 310, a file input and output (I/O) component 312,and a mass storage device component 314. The registry API component 306updates one or more system settings on the for the target software 110by modifying one or more files (e.g., a registry) on the targetcomputer-readable media 108. The setup API component 308 configures thenext boot state of the target software 110 (e.g., out of box, firstboot, or audit boot) and configures setup configuration options such asthe install directory. The service install API component 310 adds orremoves a service to or from the target software 110 by installing oneor more files associated with the service to the targetcomputer-readable media 108. The file I/O component 312 performs fileinput and file output operations on the target computer-readable media108. The mass storage device component 314 adds at least one devicedriver for a mass storage device controller to the target software 110by installing one or more files associated with the device driver to thetarget computer-readable media 108. In addition, the components of thedriver software 304 may configure system settings (e.g., registry keys)for the target software 110 via the registry API component 306. Thecomponents of the driver software 304 operate on the offline targetsoftware 110.

Those skilled in the art will appreciate that the driver software 304may include other components not specifically described herein thatallow the computer 102 to manipulate the target software 110 while thetarget software 110 is offline. It is contemplated by the inventors thatsuch alternate embodiments of the driver software 304 are within thescope of the invention. For example, the mass storage device component314 is one example of a device component installing a device driver, butother device components installing other device drivers, hardware orsoftware, are contemplated by the inventors to be within the scope ofthe invention.

Referring next to FIG. 4, an exemplary flow chart illustrates theoperation of the driver software 304 components. At step 402, the targetsoftware 110 is identified from a command received from a user. A listof one or more tasks associated with execution of the command isgenerated at step 404. Generating a list of one or more tasks associatedwith the execution of a command occurs dynamically, or on-the-fly, inthat the tasks are not hard-coded into the driver components. The drivercomponents dynamically generate the list of tasks to be performed andstore the list in a queue. At step 406, the list of one or more tasks isstored in a queue accessible by the computer 102. The list of one ormore tasks stored in the queue are modified at step 408 such that thetasks are directed to operate on the target computer-readable media 108.That is, the list is modified such that an operating system of thecomputer 102 such as operating system 302 will execute the listed tasksto manipulate or otherwise operate on the target software 110. Thedriver components edit the list of tasks stored in the queue to point tothe offline image loaded in the online system. For example, the drivercomponent may edit a string in the list of tasks from “D:\i386\System32”to “C:\opsysdir\System32.” At step 410, the queue is committed toperform each of the modified tasks. Alternatively, the computer 102 maygenerate, store, and modify the tasks while the target software 110 isonline and then commit the queue to perform the tasks when the targetsoftware 110 is offline.

Referring now to FIG. 5, a block diagram illustrates an exemplarycomputer-readable medium 502 storing a queue 504. In this instance, thequeue 504 is a data structure that can be used by the computer 102 tomanipulate the target software 110 stored on the targetcomputer-readable media 108. The queue 504 has a queue field 506 thatstores a list of one or more tasks 508 such as task #1 through task #Nthat are associated with execution of a command received from a user.

In one embodiment, the computer 102 modifies the list of tasks 508stored in the queue field 506 to direct the tasks 508 to operate on thetarget computer-readable media 108. Further, the computer 102 commitsthe queue to perform each of the modified tasks 508 stored in the queuefield.

Referring next to FIG. 6, a block diagram illustrates the exemplaryelements of software for offline manipulation of mass storage devicedrivers. As described above, the computer 102 is connected to the targetsoftware 110 via network 106. In this example, the computer 102 includesuser interface 602, a system preparation file 604, and a software tool606. The target software 110 includes a device database 608. The devicedatabase 608 stores mass storage device drivers. While the computer 102is shown connected to the target software 110 via network 106, such aconnection is optional as described above.

The user interface 602 is, for example, a graphical user interface (GUI)that allows the user to create the system preparation file 604. In thisinstance, the system preparation file 604 includes a list of drivers 610to be added to the target software 110 in response to the input receivedfrom the user, identification data 612 for each of the drivers, andconfiguration information 614 for each of the drivers. For example, thelist of drivers 610 may include a text-based description of each driver.In addition, the identification data 612 may include a unique identifiercorresponding to each driver. Further, the configuration information 614may specify parameters for use when installing each driver.

The software tool 606 executes executable instructions on the computer102 in response to input received by the user interface 602. Thesoftware tool 606 includes a command-line interface 616 for parsingcommand-line options received via the user interface 602. In oneembodiment, the command-line options identify the system preparationfile 604 (e.g., via a path), the target computer-readable medium 108(e.g., via a path), and/or the target software 110. The execution of theexecutable instructions by software tool 606 and the command-lineinterface 616 allows manipulation of the target software 110. By way ofexample, and not limitation, the manipulation of the target software 110includes: installing the list of drivers 610 to the target software 110,enabling the drivers by adding the identification data 612 from thesystem preparation file 604 to the device database 608, configuring thedrivers according to the configuration information 614, and updating oneor more system settings for the server 104 as needed by the installeddrivers.

In an alternative embodiment, the invention software is operable in anoffline fashion with images or target software 110 that have not beenfully applied, installed, or otherwise integrated. For example, theinvention software can modify application programs that have beenpre-installed or staged. Similarly, a software patch can be applied toan offline image prior to the first out of the box experience by theuser. In a further example, an original equipment manufacturer (OEM) canadd a driver that is necessary for booting from an offline image thatincludes an operating system. The offline image can then boot after theOEM adds the necessary driver. In another example, an OEM can add aservice pack or other patch to numerous offline images that have not yetbeen applied or integrated.

FIG. 7 shows one example of a general purpose computing device in theform of a computer 130. In one embodiment of the invention, a computersuch as the computer 130 is suitable for use in the other figuresillustrated and described herein. Computer 130 has one or moreprocessors or processing units 132 and a system memory 134. In theillustrated embodiment, a system bus 136 couples various systemcomponents including the system memory 134 to the processors 132. Thebus 136 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus also known as Mezzanine bus.

The computer 130 typically has at least some form of computer readablemedia. Computer readable media, which include both volatile andnonvolatile media, removable and non-removable media, may be anyavailable medium that can be accessed by computer 130. By way of exampleand not limitation, readable media comprise computer storage media andcommunication media. Computer storage media include volatile andnonvolatile, removable and non-removable media implemented in any methodor technology for storage of information such as computer readableinstructions, data structures, program modules or other data. Forexample, computer storage media include RAM, ROM, EEPROM, flash memoryor other memory technology, CD-ROM, digital versatile disks (DVD) orother optical disk storage, magnetic cassettes, magnetic tape, magneticdisk storage or other magnetic storage devices or any other medium thatcan be used to store the desired in information and that can be accessedby computer 130. Communication media typically embody computer readableinstructions, data structures, program modules, or other data in amodulated data signal such as a carrier wave or other transportmechanism and include any information delivery media. Those skilled inthe art are familiar with the modulated data signal, which has one ormore of its characteristics set or changed in such a manner as to encodeinformation in the signal. Wired media, such as a wired network ordirect-wired connection, and wireless media, such as acoustic, RF,infrared, and other wireless media, are examples of communication media.Combinations of the any of the above are also included within the scopeof computer readable media.

The system memory 134 includes computer storage media in the form ofremovable and/or non-removable, volatile and/or nonvolatile memory. Inthe illustrated embodiment, system memory 134 includes read only memory(ROM) 138 and random access memory (RAM) 140. A basic input/outputsystem 142 (BIOS), containing the basic routines that help to transferinformation between elements within computer 130, such as duringstart-up, is typically stored in ROM 138. RAM 140 typically containsdata and/or program modules that are immediately accessible to and/orpresently being operated on by processing unit 132. By way of example,and not limitation, FIG. 7 illustrates operating system 144, applicationprograms 146, other program modules 148, and program data 150.

The computer 130 may also include other removable/non-removable,volatile/nonvolatile computer storage media. For example FIG. 7illustrates a hard disk drive 154 that reads from or writes tonon-removable, nonvolatile magnetic media. FIG. 8 also shows a magneticdisk drive 156 that reads from or writes to a removable, nonvolatilemagnetic disk 158, and an optical disk drive 160 that reads from orwrite to a removable, nonvolatile optical disk 162 such as a CD-ROM orother optical media. Other removable/non-removable, volatile/nonvolatilecomputer storage media that can be used in the exemplary operatingenvironment include, but are not limited to, magnetic tape cassettes,flash memory cards, digital versatile disks, digital video tape, solidstate RAM, solid state ROM, and the like. The hard disk drive 154, andmagnetic disk drive 156 and optical disk drive 160 are typicallyconnected to the system bus 136 by a non-volatile memory interface, suchas interface 166.

The drives or other mass storage devices and their associated computerstorage media discussed above and illustrated in FIG. 7, provide storageof computer-readable instructions, data structures, program modules andother data for the computer 130. In FIG. 7, for example, hard disk drive154 is illustrated as storing operating system 170, application programs172, other program modules 174, and program data 176. Note that thesecomponents can either be the same as or different from operating system144, application programs 146, other program modules 148, and programdata 150. Operating system 170, application programs 172, other programmodules 174, and program data 176 are given different numbers here toillustrate that, at a minimum, they are different copies.

A user may enter commands and information into computer 130 throughinput devices or user interface selection devices such as a keyboard 180and a pointing device 182 (e.g., a mouse, trackball, pen, or touch pad).Other input devices (not shown) may include a microphone, joystick, gamepad, satellite dish, scanner, or the like. These and other input devicesare connected to processing unit 132 through a user input interface 184that is coupled to system bus 136, but may be connected by otherinterface and bus structures, such as a parallel port, game port, or aUniversal Serial Bus (USB). A monitor 188 or other type of displaydevice is also connected to system bus 136 via an interface, such as avideo interface 190. In addition to the monitor 188, computers ofteninclude other peripheral output devices (not shown) such as a printerand speakers, which may be connected through an output peripheralinterface (not shown).

The computer 130 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer194. The remote computer 194 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto computer 130. The logical connections depicted in FIG. 7 include alocal area network (LAN) 196 and a wide area network (WAN) 198, but mayalso include other networks. Such networking environments arecommonplace in offices, enterprise-wide computer networks, intranets,and global computer networks (e.g., the Internet).

When used in a local area networking environment, computer 130 isconnected to the LAN 196 through a network interface or adapter 186.When used in a wide area networking environment, computer 130 typicallyincludes a modem 178 or other means for establishing communications overthe WAN 198, such as the Internet. The modem 178, which may be internalor external, is connected to system bus 136 via the user input interface184, or other appropriate mechanism. In a networked environment, programmodules depicted relative to computer 130, or portions thereof, may bestored in a remote memory storage device (not shown). By way of example,and not limitation, FIG. 8 illustrates remote application programs 192as residing on the memory device. It will appreciated that the networkconnections shown are exemplary and other means of establishing acommunications link between the computers may be used.

Generally, the data processors of computer 130 are programmed by meansof instructions stored at different times in the variouscomputer-readable storage media of the computer. Programs and operatingsystems are typically distributed, for example, on floppy disks orCD-ROMs. From there, they are installed or loaded into the secondarymemory of a computer. At execution, they are loaded at least partiallyinto the computer's primary electronic memory. The invention describedherein includes these and other various types of computer-readablestorage media when such media contain instructions or programs forimplementing the steps described below in conjunction with amicroprocessor or other data processor. The invention also includes thecomputer itself when programmed according to the methods and techniquesdescribed herein.

For purposes of illustration, programs and other executable programcomponents, such as the operating system, are illustrated herein asdiscrete blocks. It is recognized, however, that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

Although described in connection with an exemplary computing systemenvironment, including computer 130, the invention is operational withnumerous other general purpose or special purpose computing systemenvironments or configurations. The computing system environment is notintended to suggest any limitation as to the scope of use orfunctionality of the invention. Moreover, the computing systemenvironment should not be interpreted as having any dependency orrequirement relating to any one or combination of components illustratedin the exemplary operating environment. Examples of well known computingsystems, environments, and/or configurations that may be suitable foruse with the invention include, but are not limited to, personalcomputers, server computers, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like.

The invention may be described in the general context ofcomputer-executable instructions, such as program modules, executed byone or more computers or other devices. Generally, program modulesinclude, but are not limited to, routines, programs, objects,components, and data structures that perform particular tasks orimplement particular abstract data types. The invention may also bepracticed in distributed computing environments where tasks areperformed by remote processing devices that are linked through acommunications network. In a distributed computing environment, programmodules may be located in both local and remote computer storage mediaincluding memory storage devices.

In operation, the computer 102 such as computer 130 executescomputer-executable instructions such as those illustrated in FIG. 4 tomanipulate the target software 110 stored on the targetcomputer-readable media 108 of the server 104.

The following examples illustrate the invention.

An exemplary software tool according to the invention such as softwaretool 606 allows OEMs to add mass storage device drivers to an offlineimage without rebooting the image or rebuilding the operating system. Asa result, OEMs can reduce the number of images they maintain. Thesoftware tool 606 also increases the life span of the images because theimages do not need to be rebuilt for new devices. In this example, thesoftware tool 606 is a mass storage device installation tool (e.g.,msdinst.exe). The software tool 606 allows OEMs to change existingoffline images without booting into or recreating those images. Thesoftware tool 606 works with various offline images including, but notlimited to, offline images that are accessible via a network such asnetwork 106 and need new mass storage device drivers. For example, thesoftware tool 606 can update drivers that already exist on the image.The software tool 606 also allows OEMs to update areas in the registry.In one embodiment, the software tool 606 executes in a minimal operatingsystem environment.

The user creates a Sysprep.inf file with only the [SysprepMassStorage]section. In the [SysprepMassStorage] section, the user lists each newmass storage devices by a unique identifier (ID) that need to be added.The user accesses the software tool 606, for example, by installing thetool on a computer that is connected to a network such as network 106and is running a minimal operating system. The user opens a commandwindow and starts execution of the software tool 606 with command-lineoptions. The command-line options include, but are not limited to, thepath to the new Sysprep.inf file and the path to the directory thatcontains the image to be updated. For example, the following command maybe used.

D:\i386\system32>msdinst.exe A:\Sysprep.inf E:\Tools\Image1

In response to the command, the software tool 606 adds each ID from thenew Sysprep.inf to a critical device database such as device database608 enabling the mass storage device driver to boot the system. Inaddition, the software tool 606 installs the necessary driver files andconfigures those drivers to start as specified in the Sysprep.inf file.Further, the software tool 606 updates the Sysprep-clean section withall the new and updated registry information. Also, the software tool606 searches Sysprep.inf for driver files in the file system related tothe drivers identified in Sysprep.inf. In particular, the software tool606 searches the regular and compressed versions of the driver's .inffiles in the same directory as originally specified in the newSysprep.inf. For example, supermsd.sys may be the .inf file for one ofthe drivers. The software tool 606 looks for supermsd.sys first and alsolooks for any compressed versions of supermsd.sys if they exist. Thesoftware tool 606 also searches all the files in the offline image'sdriver.cab, all the files in the offline image's driver.cab present inthe source media, and the offline image's sourcepath directory for theregular and compressed versions of each driver's .inf file.

When introducing elements of the present invention or the embodiment(s)thereof, the articles “a,” “an,” “the,” and “said” are intended to meanthat there are one or more of the elements. The terms “comprising,”“including,” and “having” are intended to be inclusive and mean thatthere may be additional elements other than the listed elements.

In view of the above, it will be seen that the several objects of theinvention are achieved and other advantageous results attained.

As various changes could be made in the above constructions, products,and methods without departing from the scope of the invention, it isintended that all matter contained in the above description and shown inthe accompanying drawings shall be interpreted as illustrative and notin a limiting sense.

1. A system for manipulation by a computer of target software stored onone or more target computer-readable storage media, said target softwarehaving an online state and an offline state, wherein said get softwareis in the online state when being executed and in the offline state whennot being executed, said system comprising a driver executing on thecomputer to provide access to the target software by mounting the targetcomputer-readable storage media on the computer, said driver comprisingone or more redirect components for manipulating the target softwarewhen the target software is offline by receiving, from a user, at leastone command having a storage location specified therein and modifyingthe specified storage location to redirect the command to operate on thetarget software stored on the target computer-readable storage mediamounted on the computer.
 2. The system of claim 1, wherein the targetsoftware comprises an operating system, and wherein the target softwareis online when operating system is executing.
 3. The system of claim 1,wherein the target software comprises an application program, andwherein the target software is online when the application program isexecuting.
 4. The system of claim 1, wherein the computer and the targetsoftware are connected to a data communication system, and wherein thedriver executes on the computer to provide access to the target softwarevia the data communication system.
 5. The system of claim 1, furthercomprising a graphical user interface, wherein the command comprisesinput from the user via the graphical user interface.
 6. The systemclaim 1, wherein the driver, responsive to user input, manipulates atleast one system setting for the target software.
 7. The system of claim1, wherein the target software comprises at least one file, and whereinthe driver, responsive to user input, manipulates the target software bymodifying the file.
 8. The system of claim 1, wherein the targetcomputer-readable storage media comprise one or more files, wherein thedriver modifies the files.
 9. The system of claim 8, wherein the driveradds to or deletes from the files.
 10. The system of claim 1, whereinthe driver comprises computer-executable instructions for storing, in aqueue accessible by the computer, a list of one or more tasks associatedwith execution of the command.
 11. The system of claim 10, wherein thedriver further comprises in computer-executable instructions formodifying the list of tasks stored in the queue to direct the tasks tooperate on the target computer-readable storage media.
 12. The system ofclaim 11, wherein the driver further comprises compute-executableinstructions for committing the queue to perform each of the modifiedtasks.
 13. The system of claim 11, wherein the computer-executableinstructions for storing and modifying are executed when the targetsoftware is in the online state.
 14. The system of claim 1, wherein thedriver comprises a service component for adding a service to the targetsoftware by installing one or more files associated with the service tothe target computer-readable storage media.
 15. The system of claim 1,wherein the driver comprises a registry component for updating at leastone system setting of the target software by modifying one or more fileson the target computer-readable storage media.
 16. The system of claim1, wherein the driver comprises a file component for performing fileinput and file output operations on the target computer-readable storagemedia.
 17. The system of claim 1, wherein the driver comprises a devicecomponent for adding at least one device driver to the target softwareby installing one or more files associated with the device driver to thetarget computer-readable storage media.
 18. The system of claim 17,wherein the device driver is a mass storage device controller.
 19. Thesystem of claim 17, wherein the device component is associated with ahardware device.
 20. A method for manipulation by a computer of targetsoftware stored on one or more target computer-readable storage media,said target software having an online state and an offline state,wherein said target software is in the online state when being executedand in the offline state when not being executed, said method comprisingaccessing the target computer-readable storage media when the targetsoftware is offline by: receiving, by a driver executing on the computerto provide access to the target software, at least one command from auser, said command having a storage location specified therein;mounting, by the driver, the target computer-readable storage media onthe computer; modifying, by the driver, the specified storage locationto redirect the command to operate on the target software stored on thetarget computer-readable storage media mounted on the computer.
 21. Themethod of claim 20, wherein the target software comprises an operatingsystem, and wherein said accessing comprises accessing the targetcomputer-readable storage media when the operating system is not beingexecuted.
 22. The method of claim 20, wherein the target softwarecomprises an application program, and wherein said accessing comprisesaccessing the target computer-readable storage media when theapplication program is not being executed.
 23. The method of claim 20,wherein the computer and the target software are connected to a datacommunication system.
 24. The method of claim 20, further comprisinggenerating a list of one or more tasks associated with execution of thecommand.
 25. The method of claim 24, further comprising storing the listof tasks in a queue accessible by the computer.
 26. The method of claim25, further comprising modifying the list of tasks stored in the queueto direct the tasks to operate on the target computer-readable storagemedia.
 27. The method of claim 26, further comprising committing thequeue to perform each of the modified tasks.
 28. The method of claim 20,wherein the target computer-readable storage media comprise one or morefiles, and wherein accessing comprises modifying the files.
 29. Themethod of claim 28, wherein in modifying comprises adding to or deletingfrom the files.
 30. The method of claim 20, wherein accessing comprisesmanipulating at least one system setting for the target software. 31.The method of claim 20, further comprising identifying the targetsoftware from the command.
 32. The method of claim 31, wherein thecommand comprises one or more command-line options, and whereinidentifying comprises parsing the command-line options.
 33. The methodof claim 20, wherein one or more computer-readable storage media havecomputer-executable instructions for performing the method of claim 20.34. A computer-readable storage medium having stored thereon a datastructure representing a queue for use by a computer in manipulatingtarget software stored on one or more target computer-readable storagemedia, said target software having an online state and an offline state,wherein said target software is in the online state when being executedand in the offline state when not being executed, said manipulatingoccurring when the target computer-readable storage media is mounted onthe computer and the target software is in the offline state andresponsive to at least one command received from a user, said datastructure comprising a queue field storing a list of one or more tasksassociated with execution of the command, each of said tasks having astorage location specified therein, wherein a driver executing on thecomputer to provide access to the target software modifies the storagelocations specified in the list of tasks stored in the queue field todirect the tasks to operate on the target software stored on the targetcomputer-readable storage media mounted on the computer.
 35. Thecomputer-readable storage medium of claim 34, wherein the targetsoftware comprises an operating system, and wherein the target softwareis online when the operating system is executing.
 36. Thecomputer-readable storage medium of claim 34, wherein the targetsoftware comprises an application program, and wherein the targetsoftware is online when the application program is executing.
 37. Thecomputer-readable storage medium of claim 34, wherein the computer andthe target software are connected to a data communication system. 38.The computer-readable storage medium of claim 34, wherein the computercommits the queue to perform each of the modified tasks stored in thequeue field.